var createError = require('http-errors');
var express = require('express');
var path = require('path');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var proRouter = require('./routes/pro');
var userRouter = require('./routes/user');
var orderRouter = require('./routes/order');
var cartRouter = require('./routes/cart');
//引入cookieParser  
var cookieParser = require('cookie-parser')
//express官方推荐的session引擎  
var session = require('express-session')


// 注册与登录功能 的路由引入下面
var loginRouter = require('./routes/login');
var registerRouter = require('./routes/register');
var kuayuRouter = require('./routes/kuayu');


// 注册与登录功能 的路由引入上面


var app = express();
// view engine setup
 
app.set('views', path.join(__dirname, 'views'));
console.log(path.join(__dirname))
//使用模板 引擎ejs
app.set('view engine', 'ejs');
// dev的时候会处理logger日志
app.use(logger('dev'));

// cookie一个 官方推荐使用的解析器  
//cookie服务器 往浏览器送 直接送  cookie要来 需要解析器使用更方便
//app.use 是中间件  
app.use(cookieParser())
// 使用express的json模块 可以接收和处理现在最常用方便的JSON数据 脚手架已经配好
app.use(express.json());
//xtended: false：表示使用系统模块querystring来处理，也是官方推荐的  
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
//以下是路由表的use  必须先命中第一个路由表  才能进入后面的indexRouter 等 注意！


//看门狗 路由守卫  cookie 路由守卫 
// app.all('*',(req,res,next)=>{
//   console.log('我进入路由守卫 看门狗里面了')
//   //req 就是request 就是请求 请求就是浏览器像服务端请求的过程
//   //下一次请求同一网站时会把该cookie 自动发送给服务器
//   console.log(req.cookies) 
//    if(req.cookies.isLogin === 'ok' || req.url === '/login' || req.url === '/login/in'   ){
//      next()
//    }else {
//      console.log('进入cookie路由守卫的else里面了')
//      res.redirect('/login')
//    }

 
// })




//配置session 引擎的各种功能
// var obj = {
//   dfdfdfdddfsdfsdfsdfsdfsdfsdfsdff:{
//       username:'zs',
//       password:123456
//   }
// }
//session 路由守卫
// app.use(session({
//   //加密的字符串 混入加密字符串
//   secret: 'dfdsfeiejdfdfdsi',
//   // islogin  ok   
//   //强制保存 默认false   
//   resave: false,
//   //初始化session 模块
//   saveUninitialized: true,
//   cookie:{maxAge:1000*10}
// }))

// //session 路由守卫
// app.all('*',(req,res,next)=>{
//   console.log('进入session的路由守卫了')
//   if(req.session.isLogin === 'ok' || req.url === '/login' || req.url === '/login/in' || req.url === '/register/in' || req.url === '/register') {
//     next ()
//   } else {
//     console.log('进入session路由守卫的else里面')
//     res.redirect('/login')
//   }
// })












app.use('/', indexRouter);
// app.use('/users', usersRouter);
app.use('/pro', proRouter);
app.use('/kuayu', kuayuRouter);
app.use('/order', orderRouter);
app.use('/user', userRouter);
app.use('/cart', cartRouter);
// app.use('/vue2', vueRouter);
//注册与登录功能的路由use使用下面
app.use('/login',loginRouter)
app.use('/register',registerRouter)

 //注册与登录功能的路由use使用上面

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
